'''
类和对象：
    1.类是对象的类型，对象是类的实例。
    2.类是对象的模板，对象是类的实例。
    3.类是对象的抽象，对象是类的具体。
'''
class Student: # 定义一个类，类的名称是Student，类的名称是大写字母开头的，类的名称是驼峰命名法。
    def __init__(self,name,age,gender): # 定义一个方法，方法的名称是__init__，方法的作用是初始化对象的属性。
        self.name=name # 定义一个属性，属性的名称是name，属性的值是name。
        self.age=age # 定义一个属性，属性的名称是age，属性的值是age。
        self.gender=gender # 定义一个属性，属性的名称是gender，属性的值是gender。
    def study(self): # 定义一个方法，方法的名称是study，方法的作用是学习。
        print(self.name,"正在学习。") # 输出self.name的值，值是self.name。
    def say_hello(self): # 定义一个方法，方法的名称是say_hello，方法的作用是说hello。
        print("hello,我是",self.name) # 输出hello,我是self.name的值，值是self.name。
#创建对象：
s1=Student("张三",18,"男") # 创建一个对象，对象的名称是s1，对象的类型是Student，对象的属性是name,age,gender。
s2=Student("李四",19,"女") # 创建一个对象，对象的名称是s2，对象的类型是Student，对象的属性是name,age,gender。
s3=Student("王五",20,"男") # 创建一个对象，对象的名称是s3，对象的类型是Student，对象的属性是name,age,gender。
#访问对象的属性：
print(s1.name,s1.age,s1.gender) # 输出s1.name的值，值是s1.name。
print(s2.name,s2.age,s2.gender) # 输出s2.name的值，值是s2.name。
print(s3.name,s3.age,s3.gender) # 输出s3.name的值，值是s3.name。
#调用对象的方法：
s1.study() # 调用s1的study()方法。
s2.study() # 调用s2的study()方法。
s3.study() # 调用s3的study()方法。
s1.say_hello() # 调用s1的say_hello()方法。
s2.say_hello() # 调用s2的say_hello()方法。
s3.say_hello() # 调用s3的say_hello()方法。

